home *** CD-ROM | disk | FTP | other *** search
/ Scene 96 / Scene 96 International Edition (Zyklop Software) (Disc 2) (1997).iso / misc / coding / cp2dekit / h / gmiplay.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-12-29  |  2.6 KB  |  119 lines

  1. //***************************************************************************
  2. //
  3. // this file is (c) '94-'96 Niklas Beisert
  4. //
  5. // this file is part of the cubic player development kit.
  6. // you may only use/modify/spread this file under the terms stated
  7. // in the cubic player development kit accompanying documentation.
  8. //
  9. //***************************************************************************
  10.  
  11. #ifndef __MIDI_H
  12. #define __MIDI_H
  13.  
  14. struct msample
  15. {
  16.   char name[32];
  17.   unsigned char sampnum;
  18.   signed short handle;
  19.   unsigned short normnote;
  20.   unsigned long volrte[6];
  21.   unsigned short volpos[6];
  22.   unsigned char end;
  23.   signed char sustain;
  24.   unsigned short tremswp;
  25.   unsigned short tremrte;
  26.   unsigned short tremdep;
  27.   unsigned short vibswp;
  28.   unsigned short vibrte;
  29.   unsigned short vibdep;
  30.   unsigned short sclfac;
  31.   unsigned char sclbas;
  32. };
  33.  
  34. struct minstrument
  35. {
  36.   char name[32];
  37.   unsigned char prognum;
  38.   unsigned short sampnum;
  39.   msample *samples;
  40.   unsigned char note[128];
  41. };
  42.  
  43. struct miditrack
  44. {
  45.   unsigned char *trk;
  46.   unsigned char *trkend;
  47. };
  48.  
  49. struct midifile
  50. {
  51.   unsigned long opt;
  52.   unsigned short tracknum;
  53.   unsigned short tempo;
  54.   miditrack *tracks;
  55.   unsigned long ticknum;
  56.   unsigned char instmap[129];
  57.   unsigned short instnum;
  58.   unsigned short sampnum;
  59.   minstrument *instruments;
  60.   sampleinfo *samples;
  61.  
  62.   void reset();
  63.   void free();
  64.   char loadsamples();
  65. };
  66.  
  67. struct mchaninfo
  68. {
  69.   unsigned char ins;
  70.   unsigned char pan;
  71.   unsigned char gvol;
  72.   signed short pitch;
  73.   unsigned char reverb;
  74.   unsigned char chorus;
  75.   unsigned char notenum;
  76.   unsigned char note[32];
  77.   unsigned char vol[32];
  78.   unsigned char opt[32];
  79. };
  80.  
  81. struct mchaninfo2
  82. {
  83.   unsigned char mute;
  84.   unsigned char notenum;
  85.   unsigned char opt[32];
  86.   unsigned char ins[32];
  87.   unsigned short note[32];
  88.   unsigned char voll[32];
  89.   unsigned char volr[32];
  90. };
  91.  
  92. struct mglobinfo
  93. {
  94.   unsigned long curtick;
  95.   unsigned long ticknum;
  96.   unsigned long speed;
  97. };
  98.  
  99. unsigned char midInit(const char *path);
  100. void midClose();
  101.  
  102. #define MID_DRUMCH16 1
  103.  
  104. char midLoadMidi(midifile &, binfile &, unsigned long opt, const char *);
  105. char midPlayMidi(const midifile &, unsigned char voices);
  106. void midStopMidi();
  107. unsigned long midGetPosition();
  108. void midSetPosition(signed long pos);
  109. void midGetChanInfo(unsigned char ch, mchaninfo &ci);
  110. void midGetRealNoteVol(unsigned char ch, mchaninfo2 &ci);
  111. void midGetGlobInfo(mglobinfo &gi);
  112. void midSetMute(int ch, int p);
  113. unsigned char midGetMute(unsigned char ch);
  114. char midLooped();
  115. void midSetLoop(unsigned char s);
  116. int midGetChanSample(int ch, short *buf, int len, int rate);
  117.  
  118. #endif
  119.